/**************************************************************************//**
 * @item     CosyOS-III Demo
 * @file     demo_task.c
 * @brief    例程-任务
 * @author   迟凯峰
 * @version  V1.0.0
 * @date     2025.05.08
 ******************************************************************************/

#if 0 // 编译开关

#include "CosyOS.H" // 用户的各个c文件中应包含此文件

/*---------------------------*
 | 创建示例任务 - 参数说明表 |
 |---------------------------+-----------------------------------------------------------*
 | 任务函数名称 | 任务优先级 | 任务栈大小 | 安全运行时 | 任务名称（兼容模式）            |
 |--------------+------------+------------+------------+---------------------------------|
 | task_1       | 1级        | 128字节    | 0，无限长  | 0，任务名称自动引用任务函数名称 |
 |--------------+------------+------------+------------+---------------------------------|
 | task_2       | 2级        | 256字节    | 3个时间片  | "task_led"为新的任务名称        |
 |--------------+------------+------------+------------+---------------------------------|
 | task_3       | 3级        | 384字节    | 6个时间片  | "task_key"为新的任务名称        |
 *---------------------------------------------------------------------------------------*/

/* 静态创建 task_1 */
uCreateTask(task_1, 1, 128, 0, 0)
{
    while(1){
        /* 任务代码 */
    }
}

/* 动态创建 task_2 */
dCreateTask(task_2, 2, 256, 3, "task_led")
{
    while(1){
        /* 任务代码 */
    }
}

/* 动态创建 task_3 */
dCreateTask(task_3, 3, 384, 6, "task_key")
{
    while(1){
        /* 任务代码 */
    }
}

/* 启动钩子
 * 除了启动用户任务以外，启动钩子还适用于那些允许缓期执行的、
 * 需要开中断以后执行的、需要调用任务级服务执行的初始化工作。*/
void start_hook(void)
{
    uStartTask_Ready  (task_1); // 启动 task_1，初始状态为就绪状态
    uStartTask_Block  (task_2); // 启动 task_2，初始状态为阻塞状态（阻塞类型为延时阻塞，延时时间为无限长）
    uStartTask_Suspend(task_3); // 启动 task_3，初始状态为挂起状态
}

#endif
